package com.dofun.locationservice.biz.main;

import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.CoordinateConverter;
import com.dofun.locationservice.base.BasePresenter;

import java.util.LinkedList;

/**
 * Created by G on 2019/9/9.
 */

public class MainPresenter<T extends IMainView> extends BasePresenter<T> {

    @Override
    protected void init() {

    }

    @Override
    public void destroy() {

    }

    /**
     * 标准的GPS经纬度坐标直接在地图上绘制会有偏移，这是测绘局和地图商设置的加密，要转换成百度地图坐标
     *
     * @return 百度地图坐标
     */
    public LatLng gpsToBaidu(LatLng data) {// data格式 nmea标准数据 ddmm.mmmmm,ddmm.mmmm
        // 如3030.90909,11449.1234

        // 将GPS设备采集的原始GPS坐标转换成百度坐标
        CoordinateConverter converter = new CoordinateConverter();
        converter.from(CoordinateConverter.CoordType.GPS);
        // sourceLatLng待转换坐标
        converter.coord(data);
        LatLng desLatLng = converter.convert();
        return desLatLng;
    }

    public MapStatusUpdate getMapStatusUpdate(LinkedList<MyLocationData> pointsList) {
        if (pointsList != null && pointsList.size() > 0) {
            MyLocationData locationData = pointsList.get(pointsList.size() - 1);
            LatLng lastLatLng = new LatLng(locationData.latitude, locationData.longitude);
            // 定义地图状态
            MapStatus mMapStatus = new MapStatus.Builder().target(lastLatLng).build();
            // 定义MapStatusUpdate对象，以便描述地图状态将要发生的变化
            MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
            // 改变地图状态
            return mMapStatusUpdate;
        } else {
            return null;
        }
    }
}
